package com.acoreful.menos.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 *
 */
public class ValidateUtils {
	
	/**
	 * <h3>电信</h3>
	 * <p>
	 * 中国电信手机号码开头数字 <br/>
	 * 2G/3G号段（CDMA2000网络）133、153、180、181、189 <br/>
	 * 4G号段 177
	 * </p>
	 * <h3>联通</h3>
	 * <p>
	 * 中国联通手机号码开头数字<br/>
	 * 2G号段（GSM网络）130、131、132、155、156<br/>
	 * 3G上网卡145<br/>
	 * 3G号段（WCDMA网络）185、186<br/>
	 * 4G号段 176<br/>
	 * </p>
	 * <h3>移动</h3>
	 * <p>
	 * 中国移动手机号码开头数字<br/>
	 * 2G号段（GSM网络）有134x（0-8）、135、136、137、138、139、150、151、152、158、159、182、183、184
	 * 3G号段（TD-SCDMA网络）有157、187、188<br/>
	 * 3G上网卡 147<br/>
	 * 4G号段 178<br/>
	 * </p>
	 * <h3>补充</h3>
	 * <p>
	 * 14号段以前为上网卡专属号段，如中国联通的是145，中国移动的是147等等。<br/>
	 * 170号段为虚拟运营商专属号段，170号段的 11 位手机号前四位来区分基础运营商，其中 “1700” 为中国电信的转售号码标识，“1705”
	 * 为中国移动，“1709” 为中国联通。<br/>
	 * 卫星通信 1349<br/>
	 * </p>
	 * 
	 *
	 * @param str
	 * @return
	 */
	public static boolean isMobileNum(String str) {
		final String regex = "^((134[0-8]\\d{7})|(14[57]\\d{8})|(1[35][^4]\\d{8})|(17(0[059]\\d{7})|([6-8]\\d{8}))|(18\\d{9}))$";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(str);
		return matcher.matches();
	}
}
